#ifndef _CHAT_H
#define _CHAT_H

#define MAX_USER_NUM    64
#define DATA_MAX_SIZE   256
#define NAME_MAX_SIZE   32
#define PASSWD_MAX_SIZE   32
#define BUFFER_MAX_SIZE 512
/*在线用户结构体*/
typedef struct OnLine{
    int fd;     /*-1，表示用户不在线，fd>0，代表在线用户的socket file descriptor*/
    int flag;   /*register(1) or not(-1)*/
    char name[NAME_MAX_SIZE];  /*user name*/
    char passwd[PASSWD_MAX_SIZE];    /*password*/
}OnLine, POnLine;

/*通信发送的信令结构体*/
typedef struct MyProtocol{
    int cmd;        /*登录注册等命令*/
    int state;     /*命令返回的状态信息*/
    char name[NAME_MAX_SIZE];  /*user name*/
    char data[256]; /*data*/
}MyProtocol, PMyProtocol;

/*cmd macro*/
#define BROADCAST 0X00000001        /*广播*/
#define PRIVATE 0X00000002          /*私聊*/
#define REGISTE 0X00000004          /*注册*/
#define LOGIN 0X00000008            /*登录*/
#define ONLINEUSER     0X00000010   /*所有在线用户*/
#define LOGOUT     0X00000020       /*下线*/

/*return code*/
#define OP_OK    0X80000000             /*opr ok*/
#define ONLINEUSER_OK    0X80000001     /*显示在线用户，未结束*/
#define ONLINEUSER_OVER  0X80000002     /*显示在线用户，已经发送完毕*/
#define NAME_EXIST 0X80000003           /*注册信息，用户名已经存在*/
#define NAME_PWD_NMATCH 0X80000004      /*登录时，输入的用户名密码不对*/
#define USER_LOGED 0X80000005           /*登录时，提示该用户已经在线*/
#define USER_NOT_REGIST 0X80000006      /*登录时，提示用户没有注册*/


#endif

